Skip to content

Conversation

@nirii00
Copy link
Collaborator

@nirii00 nirii00 commented Mar 1, 2025

✅ 요약

🪄 변경사항

  • 로그인 기능 구현
  • api 요청시 request와 response를 intercept 후 토큰 확인
  • useAuthStore에 zipCode와 token 저장 및 관리

🖼️ 결과 화면 (선택)

💬 리뷰어에게 전할 말 (선택)

  • 아직 리프레시 토큰 전달 시에 백엔드 수정사항이 필요해서 관련한 기능이 아직 미흡할 수 있습니다.

(탈퇴, 토큰재발급)

  • 처음 회원가입을 진행하시는 경우 저에게 말씀해주시면 좋을 것 같습니다!
    (제가 계정 둘다 탈퇴가 안돼서 회원가입시에 토큰 저장 오류가 해결됐는지 확인이 필요할 것 같습니다!)
    (만약 안되는 경우 -> 마이페이지에서 로그아웃을 하시고 다시 시도해보시면 될겁니다!)

nirii00 and others added 11 commits February 26, 2025 14:51
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중
* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정
* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정
- API 완성 되지 않음 : 논의된 부분을 바탕으로 임시로 제작함(작동 안함)
- 토큰을 전달 받기 위해 권한 상태 페이지 추가(보여주기 위한 용도가 아니라 쿼리문으로 토큰 전달을 위한 목적)
- API 수정 반영하여 오류 사항들 수정
- 기존 interceptor 문에 오류가 있어서 수정
- AuthCallback Page에서 회원정보 설정 및 우편번호 발급
* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중
- intercepter retry 코드 빠진 부분 수정
- header에 잘못 설정 하는 부분 수정
@nirii00 nirii00 linked an issue Mar 1, 2025 that may be closed by this pull request
3 tasks
nirii00 and others added 2 commits March 1, 2025 20:54
- 로그아웃 테스트를 위해 마이페이지에 로그아웃 기능을 먼저 구현했습니다!
Copy link
Collaborator

@wldnjs990 wldnjs990 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

처음 보는 코드들이 엄청 많네요 ㄷㄷㄷ... 로그인 진짜 고생많으셨습니다!!!!👍👍👍👍👍👍👍🥕

src/apis/auth.ts Outdated

type LoginType = 'kakao' | 'naver' | 'google';
export const socialLogin = (loginType: LoginType) => {
window.location.href = `http://13.209.132.150:8081/oauth2/authorization/${loginType}`;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요 주소는 env파일에서 관리할 필요 없을까용?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하! 그러게요! env로 넘기겠습니다!

src/apis/auth.ts Outdated
Comment on lines 14 to 17
const response = await client.post(`/api/logout`, {
Authorization: { token: `Bearer ${accessToken}` },
withCredentials: true,
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

로그아웃은 axios의 intercept로 토큰값을 자동으로 담을수 없나용?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오호 이것도 수정하겠습니다!

Comment on lines +80 to +88
export const postLogout = async () => {
try {
const response = await client.post('/api/logout', { withCredentials: true });
if (!response) throw new Error('postLogout: failed to logout');
return response;
} catch (error) {
console.error(error);
}
};
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오잉 로그아웃 요청 함수가 2개 있네용?

const { logout } = useAuthStore.getState();
logout();
window.location.replace('/login');
return Promise.reject(error);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return문의 요 코드는 콘솔창에 에러 출력하는 코드인가용?

Comment on lines 33 to 67
async (error) => {
const { setAccessToken, logout } = useAuthStore.getState();
const originalRequest = error.config;

if (!originalRequest) {
return Promise.reject(error);
}

if (
(error.response.status === 401 ||
error.response.status === 403 ||
error.response.data.message === 'Unauthorized') &&
!originalRequest._retry
) {
originalRequest._retry = true;

try {
const response = await getNewToken();
const newToken = response?.data.accessToken;

if (!newToken) throw new Error('Failed to Refresh Token');

setAccessToken(newToken);
originalRequest.headers.Authorization = `Bearer ${newToken}`;

return client(originalRequest);
} catch (e) {
logout();
window.location.replace('/login');
return Promise.reject(e);
}
}
return Promise.reject(error);
},
);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기 파트가 엑세스토큰이 만료될 시에 리프레시 토큰으로 새 토큰을 가져오는 로직인가요?!

Comment on lines +18 to +24
// <StrictMode>
<QueryClientProvider client={queryClient}>
<BrowserRouter>
<App />
</BrowserRouter>
</QueryClientProvider>,
// </StrictMode>,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오잉 strictMode는 임시로 끄신건가용?

Comment on lines +9 to +10
const stateToken = new URLSearchParams(window.location.search).get('state');
const redirectURL = new URLSearchParams(window.location.search).get('redirect');
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

소셜로그인 후 로그인 페이지 리다이렉트 될때 이 코드를 사용해서 토큰값을 저장하는걸까용?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아닌가 유저 정보를 가져오는건가?!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

redirectUrl은 로그인 이후에 온보딩으로 갈지 홈으로 갈지 정해주는 쿼리파라미터값 같은데 어느 페이지에서 넘어올때 이런 값들이 담겨져서 오는건가용??

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오호라 redirect까지 넘겨주시는걸로 백엔드 분과 얘기가 된 건가요?? (영섭님이었나)

저는 개인적으로 이 방식의 경우, 프론트 측에서 언제든지 path 변경을 할 수도 있고, 그런 상황에서는 백엔드 측에서도 같이 수정을 하는 번거로움이 있을 것 같다는 단점이 있다고 생각이 되어요.

그래서 새로운 유저인지 아닌지만 구분해서 넘겨주시면 저희가 홈으로 보낼지 온보딩으로 보낼지 로직을 처리하는 게 더 나을 것 같다는 의견이긴 합니다

login();
userInfo.accessToken && setAccessToken(userInfo.accessToken);

if (redirectURL == 'home') {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

비교 연산자가 ===가 아닌 ==인 이유가 있을까용?

}) => {
const DUMMY_ZIPCODE = '122A2';
const [isBtnActive, setIsBtnActive] = useState<boolean>(false);
const { zipCode } = useAuthStore.getState();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

zustand에서 값을 가져올 때 세빈님이 작성해주신 방법도 되고, 아래의 방법도 되는 걸로 알아요.

const zipCode = useAuthStore((state) => state.zipCode)

이 둘의 차이점이 상태값의 변경이 발생해도 리렌더링이 되냐, 안되냐가 있는데요!
물론 zipCode는 변경될 일이 없어서 지금도 괜찮겠지만,
다른 상황에서는 원하는대로 동작하지 않을 수 있으니 이를 유의해서 사용하면 좋을 것 같아서 코멘트 남깁니당

Comment on lines 81 to 83
<p className="body-sb text-gray-100 hover:cursor-pointer" onClick={() => logout()}>
로그아웃
</p>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 퍼블리싱 할 땐 간단하게 <p> 태그를 사용했었지만, 기능 구현할 땐 button으로 변경되어야겠다고 생각을 했었어요!
혹시 button으로 변경하는 건 어떨까요? 클릭 이벤트에 cursor-pointer까지 사용하고 있어서 적절할 것 같았어요

import Background from './components/Background';

const LoginPage = () => {
type LoginType = 'kakao' | 'naver' | 'google';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 type은 밖으로 빼두는 게 좋을 것 같아요! 타입 선언이 렌더링 영향권에 두지 않아도 될 것 같아서요

package.json Outdated
"@tanstack/react-query": "^5.66.0",
"axios": "^1.7.9",
"gsap": "^3.12.7",
"immer": "^10.1.1",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

immer는 어디에 사용되는지 알 수 있을까요?

src/apis/auth.ts Outdated

import client from './client';

type LoginType = 'kakao' | 'naver' | 'google';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 아까 어디서 봤는데..! 다른 곳에서도 사용된다면 전역 타입으로 빼둬도 좋을 것 같습니다

src/apis/auth.ts Outdated
Comment on lines 15 to 16
Authorization: { token: `Bearer ${accessToken}` },
withCredentials: true,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이건 client.ts에서 미리 설정해두면 좋을 것 같아요!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

하나의 페이지에서 api를 여러개 호출 + 마침 토큰도 유효하지 않을 경우, 토큰 재발급 요청도 여러번 발생할 수 있을 것 같아요. 토큰 갱신이 한 번만 진행되도록 로직을 보완하면 어떨까요?!

}),
{
name: 'userInfo',
storage: createJSONStorage(() => sessionStorage),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리프레시 토큰도 있으니까 로컬은 어떨까요!!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

만약 이미 얘기가 된 사항이라면 조용히 있겠습니다...ㅎㅎㅎㅎㅎ

Comment on lines +17 to +21
persist<AuthStore>(
(set) => ({
isLoggedIn: false,
accessToken: '',
zipCode: '',
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 persist를 제대로 사용해보지 못해서 잘 모르겠는데...!! 이렇게 하면 accessToken도 스토리지에 저장되지 않나요?!

Comment on lines 78 to 88
const handleLeave = async () => {
try {
const response = await deleteUserInfo();
console.log(response);
} catch (error) {
console.error(error);
}
};
return <button onClick={() => handleLeave()}>탈퇴</button>;
};

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 다시 보니까 의문이 생겼어요!! 이거 임시 코드인가요? 뭘하든 로직 처리 후 다른 페이지로 이동하느라 볼 수가 없는 ui인 것 같아서요!

Comment on lines +66 to +68
if (redirectURL === 'onboarding') navigate('/onboarding');
else if (redirectURL === 'home') navigate('/');
else navigate('/notFound');
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 이동된 페이지에서 뒤로가기 하면 여기로 다시 진입 가능한가욧?!

nirii00 and others added 3 commits March 1, 2025 22:00
refac: 코드 개선

Co-authored-by: Minha Ahn <[email protected]>
- 로그인 타입 파일 만듦
- logout 중복 선언 정리
- myPage 탈퇴 추가, p 태그 -> 버튼
- useAuthState 상태 가져오는 코드 수정
@AAminha AAminha merged commit bf32263 into develop Mar 3, 2025
@AAminha AAminha deleted the 44-feat-login branch March 3, 2025 03:17
wldnjs990 added a commit that referenced this pull request Mar 4, 2025
* design: 모바일 뷰 기본 틀 설정 (#2)

* chore: mui icon 라이브러리 설치

* design: 최대 너비 600px 제한

* design: 모바일 viewport 문제 개션을 위한 훅 추가

* design: 마이페이지 퍼블리싱 (#8)

* design: 마이페이지 에셋 추가

* design: 마이페이지 퍼블리싱

* design: ConfirmModal 컴포넌트 구현 및 탈퇴 모달 적용

* design: 모달 배경 이미지 적용

* design: 모달 컴포넌트 버튼 비율 동일하도록 수정

* refactor: 중복되는 버튼 디자인 스타일 클래스로 분리

* design: 배경 오버레이 이미지 추가

* fix: useViewport 계산 상수 수정

* feat: 온도에 맞는 텍스트 보여주는 함수 추가

* refactor: hn 태그 적용

* refactor: Header 컴포넌트를 공통 레이아웃으로 분리

* refactor: 모달 오버레이 공통 컴포넌트로 분리

* design: 알림페이지 퍼블리싱 (#10)

* design: 알림 페이지 에셋 추가

* feat: 알림 아이콘 - 알림 페이지 라우팅 연결

* design: 경고 모달창 퍼블리싱

* design: 알림 페이지 퍼블리싱

* design: 페이지 상단 간격 수정

* refactor: 레이아웃 컴포넌트 구조 수정

* design: 편지작성 페이지 퍼블리싱 (#13)

* design:편지 작성 페이지 작업 시작

* design:폰트 css 추가

* design:편지 작성 페이지 작업중

* design:글 작성 페이지 관련 이미지

* design:애니메이션 요소, 테마 제외한 퍼블리싱 완료

* design:편지지 테마선택 퍼블리싱 완료

* refactor:타입명 파스칼 케이스로 변경 & 상수명 대문자로 변경 & 타입 export import문 제거 & 몇몇 코드 상수파일 통합 & 타입파일 types폴더로 이동

* refactor:코드리뷰 수정사항 적용

* design:편지작성 완료 애니메이션 구현

* design:고민편지 작성 결과에도 애니메이션 적용 & ResultLetter 컴포넌트 공용 컴포넌트로 이동

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* design: 온보딩 페이지 퍼블리싱 (#18)

* design: 온보딩 페이지 퍼블리싱

우편번호 페이지 퍼블리싱 완료
우편번호 애니메이션 구현 완료
애니메이션 페이지 퍼블리싱 완료
애니메이션 페이지 구현 중
관리자 편지는 컴포넌트 제작 후 라우팅 연결할 예정

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design: 온보딩 페이지 편지 애니메이션 구현

- 온보딩 페이지에서 편지 애니메이션 구현
- TODO: 모바일 뷰 확인
- TODO: 편지 상세 링크

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* refactor: pr 피드백 반영

- 이미지 에셋 정리
- animation 파일 분리
- css 충돌 해결
- spinner -> containerRef 오류 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>

* design: 홈 페이지 퍼블리싱  (#19)

* design: 홈 페이지 에셋 추가

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* refactor: package-json 삭제

* refactor: ModalOverlay 컴포넌트 새 속성에 맞춰 모달 정리

* fix: import 오류 해결

* refactor: SpecialLetterBanner 애니메이션 animation.css로 분리

* design: Home에서 grow 적용으로 불필요한 h-screen 제거

* rename: 에셋 파일명을 케밥 케이스로 변경

* remove: 필요없는 에셋 삭제

* fix: 이미지 경로 import 방식 수정

* refactor: 버튼 컴포넌트 반복 로직 개선

* style: HomeRight 레이아웃 수정

* refactor: max-w 값 수정 및 불필요한 삼항 연산자 제거

* rename: Navbar를 HomeHeader로 대체

* rename: 홈 페이지 배경 이미지 업데이트

* fix: 모바일 및 웹에서 레이아웃 오류 해결, 홈 페이지 구조 리팩토링

* design: 홈 페이지 왼쪽 배경 width 조정

* design: SpecialLetterBanner width 조정

* design: 게시판 이미지 버튼 width 조정

* fix: coflict 오류 해결

* design: 로그인 및 랜딩 페이지 퍼블리싱 (#22)

* design: 전체 배경 그라데이션 삽입

* design: 로그인 페이지 에셋 추가

* design: 로그인 페이지 퍼블리싱

* design: 로그인 페이지 에셋 변경 및 반영

* design: 랜딩페이지 퍼블리싱

* remove: 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 로그인 아이콘에 aria-label 추가

* style: 랜딩페이지 원 크기 수정

* design: 홈 페이지 공유 미리보기 퍼블리싱  (#25)

* fix: 홈 페이지 게시판 라우팅 오류 해결

* fix: 랜덤 응원 메시지 z-index 조정으로 클릭 안되는 오류 해결

* design: 홈 페이지 공유 미리보기 에셋 추가

* design: 홈 페이지 공유 미리보기 퍼블리싱

* fix: 랜덤 응원 메시지가 모달보다 위로 뜨는 오류 해결

* remove: landing blur 중복 에셋 삭제

* fix: landing blur 에셋 import 경로 수정

* design, feat, chore : 편지 작성 페이지 추가 퍼블리싱 + 기능구현 + API연결 + 관리자페이지 퍼블리싱 (#28)

* design : 카테고리 버튼 사이즈 full로 변경

* design : 옵션 슬라이드 바텀시트 애니메이션 구현(약간 미완)

* refactor:관리자 / 모바일용 레이아웃 분리

* design : 관리자 페이지 퍼블리싱

* design:관리자 페이지 퍼블리싱

* refactor : 폰트 선택 모달 아이콘 svgr 변경 + 목API 형식에 맞춰 타입 수정 + API 연결 작업 90% 완료

* feat:글작성 페이지 쿼리스트링으로 이전편지 가져오기 API연결

* feat:편지 상세 페이지 API 데이터바인딩 90%완료(유저 우편번호 데이터 필요)

* feat:편지삭제 api 생성

* feat:글작성, 상세 페이지 뒤로가기 버튼 + 상세페이지 글 삭제 버튼 추가

* refactor : ResultLetter 타입 변경

* feat:글 작성 페이지 네비게이션 가드 테스트

* fix:코드리뷰 수정사항 반영

* feat: 내 편지함 기능 구현 1차 (#30)

* feat: 내 편지함, 상세 기능 구현 1차
- 내 편지함 기능구현
  - 렌더링
  - 3의 배수가 아닌 경우 이미지 추가
  - 아무것도 없을 때 노트 추가
- 내 편지함 상세 기능 구현
  - 공유 작성 및 전송
  - 편지 리스트 렌더링
  - 상대방 차단하기
- TODO
  - [ ] tanstackQuery 적용
  - [ ] 무한 스크롤? 적용할지?
  - [ ] 상태관리 확인하기

* refactor: API 컨벤션 통일

- API 파일이름 수정
- api.ts 삭제

* refactor: merge 후 오류 해결

---------

Co-authored-by: nirii00 <[email protected]>

* design: 404 페이지 디자인 (#33)

- 404 페이지 퍼블리싱
- 홈으로 가는 버튼 추가

Co-authored-by: nirii00 <[email protected]>

* feat: 롤링페이퍼 기능 구현 (mock api) (#35)

* feat: Tanstack query를 이용한 데이터 가져오는 커스텀 훅 useFetchQuery 구현

* feat: NoticeRollingPaper에 데이터 패칭 적용
- NoticeRolling -> NoticeRollingPaper로 컴포넌트 명 수정

* feat: 홈 페이지에 공용 컴포넌트 적용

* rename: MessageDetailModal -> CommentDetailModal 컴포넌트 명 수정

* rename: Message -> Comment 컴포넌트 명 수정

* feat: 롤링페이퍼 조회 기능 구현

* refactor: 중복되는 배경 컴포넌트 적용 및 불필요한 에셋 제거

* refactor: 중복되는 메모 배경 컴포넌트 적용 및 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 중복되는 모달 배경 컴포넌트 적용 및 불필요한 에셋 제거

* style: 커스텀 훅 제거 및 queryClient 기본값 설정

* feat: 삭제 모달 추가 및 삭제 mock api 연결

* feat: 편지 추가 mock api 연결

* fix: 신고 ui 제거

* style: 사용하지 않는 코드 제거

* style: 엔드포인트 오타 수정

* style: 더미 제거

* feat: 오고 있는 편지 조회 기능 구현 (mock api) (#36)

* style: 홈 페이지 eslint 오류 해결

* remove: 사용하지 않는 파일 삭제

* feat: 오고 있는 편지 조회 mock api 연결

* feat: 오고 있는 편지 클릭 시 편지 상세 페이지로 이동

* feat: 편지 목록 높이 자동 조정 및 스크롤 기능 추가

* fix: 랜덤 응원 메시지 모달 위로 뜨는 오류 해결

* fix: 오고 있는 편지 클릭 시 편지 미리보기로 이동하는 라우팅 오류 해결

* feat: 오고 있는 편지 목록에서 시간이 다 된 항목을 자동으로 삭제하는 기능 추가

* refactor: 오고 있는 편지 파일 구조 수정

* style: 오고 있는 편지 함수 선언을 화살표 함수로 변환

* feat: 새로 도착한 편지 개수 계산 구현

* feat: 마이페이지 내 정보 조회 기능 구현 (mock api) (#39)

* feat: 마이페이지 내 정보 조회 기능 구현

* fix: merge conflict 해결

* fix: 온보딩 애니메이션 오류 해결 (#41)

- 온보딩 편지 애니메이션 모바일 오류 해결
- 온보딩 단계에 따른 상태관리
- 온보딩이 끝난 후 홈으로 이동

Co-authored-by: nirii00 <[email protected]>

* feat:관리자 페이지 1차 기능 구현 (#43)

* feat:관리자 페이지 신고기능 구현완료(페이지네이션 제외)

* feat:관리자 페이지 검열관리 필터링 기능 개발중(검열 단어 추가 구현중)

* feat:필터링 단어 추가기능 목api연결 완료(단어 삭제는 목api가 안만들어짐) + 차단 편지목록 퍼블리싱

* chore:badwords, filteredLetter 라우팅 분리 + 사이드바 버튼에 라우팅 연결

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 편지 게시글 공유 기능 구현 (mock api) (#53)

* feat: 공유 게시글 목록 조회 기능 구현

* feat: 공유 게시글 상세 조회 기능 구현

* feat: 게시글 공유 요청 수락/거절 기능 구현

* perf: NewLetterModal의 불필요한 api 호출 제거

* fix: HomeRight의 useEffect 의존성 배열에 fetchIncomingLetters 추가

* fix: 공유 편지 미리보기에서 텍스트와 버튼이 겹쳐보이는 오류 해결

* refactor: hasNewLetters 로컬 상태 제거 및 arrivedCount 전역 상태로 대체

* fix: 특정 모바일 크기에서 내 편지함이 가려져 잘 안 보이는 오류 해결

* fix: 특정 모바일 크기에서 게시판이 잘 안 보이는 오류 해결

* design: 홈 페이지 공유 요청 모달에 스크롤 기능 추가

* style: 불필요한 console.log 삭제

* refactor: 테스트용 코드 삭제

* refactor: 'Letter' 인터페이스 이름을 'ShareLetter'로 변경

* fix: selector로 필요한 값만 불러오도록 수정하여 불필요한 렌더링 방지

* feat: 로그인 기능구현 (#52)

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* feat: 로그인 기능 임시 구현
- API 완성 되지 않음 : 논의된 부분을 바탕으로 임시로 제작함(작동 안함)
- 토큰을 전달 받기 위해 권한 상태 페이지 추가(보여주기 위한 용도가 아니라 쿼리문으로 토큰 전달을 위한 목적)

* feat: logout API 추가

* test: 로그인 테스트용 임시 커밋

* refactor: API 변경 사항 수정 반영, 토큰관련 interceptor 문 수정
- API 수정 반영하여 오류 사항들 수정
- 기존 interceptor 문에 오류가 있어서 수정
- AuthCallback Page에서 회원정보 설정 및 우편번호 발급

* test: 탈퇴 처리 테스트

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* Fix: intercepter 오류 해결
- intercepter retry 코드 빠진 부분 수정
- header에 잘못 설정 하는 부분 수정

* feat: 마이페이지 로그아웃 적용
- 로그아웃 테스트를 위해 마이페이지에 로그아웃 기능을 먼저 구현했습니다!

* Update src/pages/Auth/index.tsx

refac: 코드 개선

Co-authored-by: Minha Ahn <[email protected]>

* refactor: 코드 리뷰 반영
- 로그인 타입 파일 만듦
- logout 중복 선언 정리
- myPage 탈퇴 추가, p 태그 -> 버튼
- useAuthState 상태 가져오는 코드 수정

* refactor: myPage 오타 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>

* FIx, Feat: 로그인 기능 버그 수정, 권한별 접근 페이지 기능 추가 (#56)

* Fix: reissue 요청 수정

* Fix: 무한 response intercept 수정
- 요청 queue 포함

* feat: 권한별 접근 페이지 기능 추가
- PrivateRoute 추가하여 로그인된 사용자만 접근 가능하도록 설정
- AuthCallbackPage 임의로 접근시 home, login redirection 추가
- 로그인된 사용자는 login 접근 불가
- TODO
  - [ ] : intercepters.response에서 reissue 실패하는 경우 기존 api 함수에 catch로 에러 전달이 안되는 것 같음(추가로 문제 상황을 확인)

---------

Co-authored-by: nirii00 <[email protected]>

* feat: deploy.yml 생성

- main branch 자동 배포를 위해 프로젝트 빌드 및 deploy.yml 파일 생성
  - secret key 등록
  - 캐시 값을 바탕으로 패키지 설치 확인
- strictMode 활성화

---------

Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Seungyeon Han (Tiffany) <[email protected]>
wldnjs990 added a commit that referenced this pull request Mar 4, 2025
* design: 모바일 뷰 기본 틀 설정 (#2)

* chore: mui icon 라이브러리 설치

* design: 최대 너비 600px 제한

* design: 모바일 viewport 문제 개션을 위한 훅 추가

* design: 마이페이지 퍼블리싱 (#8)

* design: 마이페이지 에셋 추가

* design: 마이페이지 퍼블리싱

* design: ConfirmModal 컴포넌트 구현 및 탈퇴 모달 적용

* design: 모달 배경 이미지 적용

* design: 모달 컴포넌트 버튼 비율 동일하도록 수정

* refactor: 중복되는 버튼 디자인 스타일 클래스로 분리

* design: 배경 오버레이 이미지 추가

* fix: useViewport 계산 상수 수정

* feat: 온도에 맞는 텍스트 보여주는 함수 추가

* refactor: hn 태그 적용

* refactor: Header 컴포넌트를 공통 레이아웃으로 분리

* refactor: 모달 오버레이 공통 컴포넌트로 분리

* design: 알림페이지 퍼블리싱 (#10)

* design: 알림 페이지 에셋 추가

* feat: 알림 아이콘 - 알림 페이지 라우팅 연결

* design: 경고 모달창 퍼블리싱

* design: 알림 페이지 퍼블리싱

* design: 페이지 상단 간격 수정

* refactor: 레이아웃 컴포넌트 구조 수정

* design: 편지작성 페이지 퍼블리싱 (#13)

* design:편지 작성 페이지 작업 시작

* design:폰트 css 추가

* design:편지 작성 페이지 작업중

* design:글 작성 페이지 관련 이미지

* design:애니메이션 요소, 테마 제외한 퍼블리싱 완료

* design:편지지 테마선택 퍼블리싱 완료

* refactor:타입명 파스칼 케이스로 변경 & 상수명 대문자로 변경 & 타입 export import문 제거 & 몇몇 코드 상수파일 통합 & 타입파일 types폴더로 이동

* refactor:코드리뷰 수정사항 적용

* design:편지작성 완료 애니메이션 구현

* design:고민편지 작성 결과에도 애니메이션 적용 & ResultLetter 컴포넌트 공용 컴포넌트로 이동

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* design: 온보딩 페이지 퍼블리싱 (#18)

* design: 온보딩 페이지 퍼블리싱

우편번호 페이지 퍼블리싱 완료
우편번호 애니메이션 구현 완료
애니메이션 페이지 퍼블리싱 완료
애니메이션 페이지 구현 중
관리자 편지는 컴포넌트 제작 후 라우팅 연결할 예정

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design: 온보딩 페이지 편지 애니메이션 구현

- 온보딩 페이지에서 편지 애니메이션 구현
- TODO: 모바일 뷰 확인
- TODO: 편지 상세 링크

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* refactor: pr 피드백 반영

- 이미지 에셋 정리
- animation 파일 분리
- css 충돌 해결
- spinner -> containerRef 오류 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>

* design: 홈 페이지 퍼블리싱  (#19)

* design: 홈 페이지 에셋 추가

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* refactor: package-json 삭제

* refactor: ModalOverlay 컴포넌트 새 속성에 맞춰 모달 정리

* fix: import 오류 해결

* refactor: SpecialLetterBanner 애니메이션 animation.css로 분리

* design: Home에서 grow 적용으로 불필요한 h-screen 제거

* rename: 에셋 파일명을 케밥 케이스로 변경

* remove: 필요없는 에셋 삭제

* fix: 이미지 경로 import 방식 수정

* refactor: 버튼 컴포넌트 반복 로직 개선

* style: HomeRight 레이아웃 수정

* refactor: max-w 값 수정 및 불필요한 삼항 연산자 제거

* rename: Navbar를 HomeHeader로 대체

* rename: 홈 페이지 배경 이미지 업데이트

* fix: 모바일 및 웹에서 레이아웃 오류 해결, 홈 페이지 구조 리팩토링

* design: 홈 페이지 왼쪽 배경 width 조정

* design: SpecialLetterBanner width 조정

* design: 게시판 이미지 버튼 width 조정

* fix: coflict 오류 해결

* design: 로그인 및 랜딩 페이지 퍼블리싱 (#22)

* design: 전체 배경 그라데이션 삽입

* design: 로그인 페이지 에셋 추가

* design: 로그인 페이지 퍼블리싱

* design: 로그인 페이지 에셋 변경 및 반영

* design: 랜딩페이지 퍼블리싱

* remove: 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 로그인 아이콘에 aria-label 추가

* style: 랜딩페이지 원 크기 수정

* design: 홈 페이지 공유 미리보기 퍼블리싱  (#25)

* fix: 홈 페이지 게시판 라우팅 오류 해결

* fix: 랜덤 응원 메시지 z-index 조정으로 클릭 안되는 오류 해결

* design: 홈 페이지 공유 미리보기 에셋 추가

* design: 홈 페이지 공유 미리보기 퍼블리싱

* fix: 랜덤 응원 메시지가 모달보다 위로 뜨는 오류 해결

* remove: landing blur 중복 에셋 삭제

* fix: landing blur 에셋 import 경로 수정

* design, feat, chore : 편지 작성 페이지 추가 퍼블리싱 + 기능구현 + API연결 + 관리자페이지 퍼블리싱 (#28)

* design : 카테고리 버튼 사이즈 full로 변경

* design : 옵션 슬라이드 바텀시트 애니메이션 구현(약간 미완)

* refactor:관리자 / 모바일용 레이아웃 분리

* design : 관리자 페이지 퍼블리싱

* design:관리자 페이지 퍼블리싱

* refactor : 폰트 선택 모달 아이콘 svgr 변경 + 목API 형식에 맞춰 타입 수정 + API 연결 작업 90% 완료

* feat:글작성 페이지 쿼리스트링으로 이전편지 가져오기 API연결

* feat:편지 상세 페이지 API 데이터바인딩 90%완료(유저 우편번호 데이터 필요)

* feat:편지삭제 api 생성

* feat:글작성, 상세 페이지 뒤로가기 버튼 + 상세페이지 글 삭제 버튼 추가

* refactor : ResultLetter 타입 변경

* feat:글 작성 페이지 네비게이션 가드 테스트

* fix:코드리뷰 수정사항 반영

* feat: 내 편지함 기능 구현 1차 (#30)

* feat: 내 편지함, 상세 기능 구현 1차
- 내 편지함 기능구현
  - 렌더링
  - 3의 배수가 아닌 경우 이미지 추가
  - 아무것도 없을 때 노트 추가
- 내 편지함 상세 기능 구현
  - 공유 작성 및 전송
  - 편지 리스트 렌더링
  - 상대방 차단하기
- TODO
  - [ ] tanstackQuery 적용
  - [ ] 무한 스크롤? 적용할지?
  - [ ] 상태관리 확인하기

* refactor: API 컨벤션 통일

- API 파일이름 수정
- api.ts 삭제

* refactor: merge 후 오류 해결

---------

Co-authored-by: nirii00 <[email protected]>

* design: 404 페이지 디자인 (#33)

- 404 페이지 퍼블리싱
- 홈으로 가는 버튼 추가

Co-authored-by: nirii00 <[email protected]>

* feat: 롤링페이퍼 기능 구현 (mock api) (#35)

* feat: Tanstack query를 이용한 데이터 가져오는 커스텀 훅 useFetchQuery 구현

* feat: NoticeRollingPaper에 데이터 패칭 적용
- NoticeRolling -> NoticeRollingPaper로 컴포넌트 명 수정

* feat: 홈 페이지에 공용 컴포넌트 적용

* rename: MessageDetailModal -> CommentDetailModal 컴포넌트 명 수정

* rename: Message -> Comment 컴포넌트 명 수정

* feat: 롤링페이퍼 조회 기능 구현

* refactor: 중복되는 배경 컴포넌트 적용 및 불필요한 에셋 제거

* refactor: 중복되는 메모 배경 컴포넌트 적용 및 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 중복되는 모달 배경 컴포넌트 적용 및 불필요한 에셋 제거

* style: 커스텀 훅 제거 및 queryClient 기본값 설정

* feat: 삭제 모달 추가 및 삭제 mock api 연결

* feat: 편지 추가 mock api 연결

* fix: 신고 ui 제거

* style: 사용하지 않는 코드 제거

* style: 엔드포인트 오타 수정

* style: 더미 제거

* feat: 오고 있는 편지 조회 기능 구현 (mock api) (#36)

* style: 홈 페이지 eslint 오류 해결

* remove: 사용하지 않는 파일 삭제

* feat: 오고 있는 편지 조회 mock api 연결

* feat: 오고 있는 편지 클릭 시 편지 상세 페이지로 이동

* feat: 편지 목록 높이 자동 조정 및 스크롤 기능 추가

* fix: 랜덤 응원 메시지 모달 위로 뜨는 오류 해결

* fix: 오고 있는 편지 클릭 시 편지 미리보기로 이동하는 라우팅 오류 해결

* feat: 오고 있는 편지 목록에서 시간이 다 된 항목을 자동으로 삭제하는 기능 추가

* refactor: 오고 있는 편지 파일 구조 수정

* style: 오고 있는 편지 함수 선언을 화살표 함수로 변환

* feat: 새로 도착한 편지 개수 계산 구현

* feat: 마이페이지 내 정보 조회 기능 구현 (mock api) (#39)

* feat: 마이페이지 내 정보 조회 기능 구현

* fix: merge conflict 해결

* fix: 온보딩 애니메이션 오류 해결 (#41)

- 온보딩 편지 애니메이션 모바일 오류 해결
- 온보딩 단계에 따른 상태관리
- 온보딩이 끝난 후 홈으로 이동

Co-authored-by: nirii00 <[email protected]>

* feat:관리자 페이지 1차 기능 구현 (#43)

* feat:관리자 페이지 신고기능 구현완료(페이지네이션 제외)

* feat:관리자 페이지 검열관리 필터링 기능 개발중(검열 단어 추가 구현중)

* feat:필터링 단어 추가기능 목api연결 완료(단어 삭제는 목api가 안만들어짐) + 차단 편지목록 퍼블리싱

* chore:badwords, filteredLetter 라우팅 분리 + 사이드바 버튼에 라우팅 연결

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 편지 게시글 공유 기능 구현 (mock api) (#53)

* feat: 공유 게시글 목록 조회 기능 구현

* feat: 공유 게시글 상세 조회 기능 구현

* feat: 게시글 공유 요청 수락/거절 기능 구현

* perf: NewLetterModal의 불필요한 api 호출 제거

* fix: HomeRight의 useEffect 의존성 배열에 fetchIncomingLetters 추가

* fix: 공유 편지 미리보기에서 텍스트와 버튼이 겹쳐보이는 오류 해결

* refactor: hasNewLetters 로컬 상태 제거 및 arrivedCount 전역 상태로 대체

* fix: 특정 모바일 크기에서 내 편지함이 가려져 잘 안 보이는 오류 해결

* fix: 특정 모바일 크기에서 게시판이 잘 안 보이는 오류 해결

* design: 홈 페이지 공유 요청 모달에 스크롤 기능 추가

* style: 불필요한 console.log 삭제

* refactor: 테스트용 코드 삭제

* refactor: 'Letter' 인터페이스 이름을 'ShareLetter'로 변경

* fix: selector로 필요한 값만 불러오도록 수정하여 불필요한 렌더링 방지

* feat: 로그인 기능구현 (#52)

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* feat: 로그인 기능 임시 구현
- API 완성 되지 않음 : 논의된 부분을 바탕으로 임시로 제작함(작동 안함)
- 토큰을 전달 받기 위해 권한 상태 페이지 추가(보여주기 위한 용도가 아니라 쿼리문으로 토큰 전달을 위한 목적)

* feat: logout API 추가

* test: 로그인 테스트용 임시 커밋

* refactor: API 변경 사항 수정 반영, 토큰관련 interceptor 문 수정
- API 수정 반영하여 오류 사항들 수정
- 기존 interceptor 문에 오류가 있어서 수정
- AuthCallback Page에서 회원정보 설정 및 우편번호 발급

* test: 탈퇴 처리 테스트

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* Fix: intercepter 오류 해결
- intercepter retry 코드 빠진 부분 수정
- header에 잘못 설정 하는 부분 수정

* feat: 마이페이지 로그아웃 적용
- 로그아웃 테스트를 위해 마이페이지에 로그아웃 기능을 먼저 구현했습니다!

* Update src/pages/Auth/index.tsx

refac: 코드 개선

Co-authored-by: Minha Ahn <[email protected]>

* refactor: 코드 리뷰 반영
- 로그인 타입 파일 만듦
- logout 중복 선언 정리
- myPage 탈퇴 추가, p 태그 -> 버튼
- useAuthState 상태 가져오는 코드 수정

* refactor: myPage 오타 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>

* FIx, Feat: 로그인 기능 버그 수정, 권한별 접근 페이지 기능 추가 (#56)

* Fix: reissue 요청 수정

* Fix: 무한 response intercept 수정
- 요청 queue 포함

* feat: 권한별 접근 페이지 기능 추가
- PrivateRoute 추가하여 로그인된 사용자만 접근 가능하도록 설정
- AuthCallbackPage 임의로 접근시 home, login redirection 추가
- 로그인된 사용자는 login 접근 불가
- TODO
  - [ ] : intercepters.response에서 reissue 실패하는 경우 기존 api 함수에 catch로 에러 전달이 안되는 것 같음(추가로 문제 상황을 확인)

---------

Co-authored-by: nirii00 <[email protected]>

* feat: deploy.yml 생성

- main branch 자동 배포를 위해 프로젝트 빌드 및 deploy.yml 파일 생성
  - secret key 등록
  - 캐시 값을 바탕으로 패키지 설치 확인
- strictMode 활성화

* fix: pnpm install 에러 수정

---------

Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Seungyeon Han (Tiffany) <[email protected]>
@tifsy tifsy added the ✨ Feature 기능 개발 이슈 label Mar 4, 2025
wldnjs990 added a commit that referenced this pull request Mar 4, 2025
* design: 모바일 뷰 기본 틀 설정 (#2)

* chore: mui icon 라이브러리 설치

* design: 최대 너비 600px 제한

* design: 모바일 viewport 문제 개션을 위한 훅 추가

* design: 마이페이지 퍼블리싱 (#8)

* design: 마이페이지 에셋 추가

* design: 마이페이지 퍼블리싱

* design: ConfirmModal 컴포넌트 구현 및 탈퇴 모달 적용

* design: 모달 배경 이미지 적용

* design: 모달 컴포넌트 버튼 비율 동일하도록 수정

* refactor: 중복되는 버튼 디자인 스타일 클래스로 분리

* design: 배경 오버레이 이미지 추가

* fix: useViewport 계산 상수 수정

* feat: 온도에 맞는 텍스트 보여주는 함수 추가

* refactor: hn 태그 적용

* refactor: Header 컴포넌트를 공통 레이아웃으로 분리

* refactor: 모달 오버레이 공통 컴포넌트로 분리

* design: 알림페이지 퍼블리싱 (#10)

* design: 알림 페이지 에셋 추가

* feat: 알림 아이콘 - 알림 페이지 라우팅 연결

* design: 경고 모달창 퍼블리싱

* design: 알림 페이지 퍼블리싱

* design: 페이지 상단 간격 수정

* refactor: 레이아웃 컴포넌트 구조 수정

* design: 편지작성 페이지 퍼블리싱 (#13)

* design:편지 작성 페이지 작업 시작

* design:폰트 css 추가

* design:편지 작성 페이지 작업중

* design:글 작성 페이지 관련 이미지

* design:애니메이션 요소, 테마 제외한 퍼블리싱 완료

* design:편지지 테마선택 퍼블리싱 완료

* refactor:타입명 파스칼 케이스로 변경 & 상수명 대문자로 변경 & 타입 export import문 제거 & 몇몇 코드 상수파일 통합 & 타입파일 types폴더로 이동

* refactor:코드리뷰 수정사항 적용

* design:편지작성 완료 애니메이션 구현

* design:고민편지 작성 결과에도 애니메이션 적용 & ResultLetter 컴포넌트 공용 컴포넌트로 이동

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* design: 온보딩 페이지 퍼블리싱 (#18)

* design: 온보딩 페이지 퍼블리싱

우편번호 페이지 퍼블리싱 완료
우편번호 애니메이션 구현 완료
애니메이션 페이지 퍼블리싱 완료
애니메이션 페이지 구현 중
관리자 편지는 컴포넌트 제작 후 라우팅 연결할 예정

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design: 온보딩 페이지 편지 애니메이션 구현

- 온보딩 페이지에서 편지 애니메이션 구현
- TODO: 모바일 뷰 확인
- TODO: 편지 상세 링크

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* refactor: pr 피드백 반영

- 이미지 에셋 정리
- animation 파일 분리
- css 충돌 해결
- spinner -> containerRef 오류 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>

* design: 홈 페이지 퍼블리싱  (#19)

* design: 홈 페이지 에셋 추가

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* refactor: package-json 삭제

* refactor: ModalOverlay 컴포넌트 새 속성에 맞춰 모달 정리

* fix: import 오류 해결

* refactor: SpecialLetterBanner 애니메이션 animation.css로 분리

* design: Home에서 grow 적용으로 불필요한 h-screen 제거

* rename: 에셋 파일명을 케밥 케이스로 변경

* remove: 필요없는 에셋 삭제

* fix: 이미지 경로 import 방식 수정

* refactor: 버튼 컴포넌트 반복 로직 개선

* style: HomeRight 레이아웃 수정

* refactor: max-w 값 수정 및 불필요한 삼항 연산자 제거

* rename: Navbar를 HomeHeader로 대체

* rename: 홈 페이지 배경 이미지 업데이트

* fix: 모바일 및 웹에서 레이아웃 오류 해결, 홈 페이지 구조 리팩토링

* design: 홈 페이지 왼쪽 배경 width 조정

* design: SpecialLetterBanner width 조정

* design: 게시판 이미지 버튼 width 조정

* fix: coflict 오류 해결

* design: 로그인 및 랜딩 페이지 퍼블리싱 (#22)

* design: 전체 배경 그라데이션 삽입

* design: 로그인 페이지 에셋 추가

* design: 로그인 페이지 퍼블리싱

* design: 로그인 페이지 에셋 변경 및 반영

* design: 랜딩페이지 퍼블리싱

* remove: 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 로그인 아이콘에 aria-label 추가

* style: 랜딩페이지 원 크기 수정

* design: 홈 페이지 공유 미리보기 퍼블리싱  (#25)

* fix: 홈 페이지 게시판 라우팅 오류 해결

* fix: 랜덤 응원 메시지 z-index 조정으로 클릭 안되는 오류 해결

* design: 홈 페이지 공유 미리보기 에셋 추가

* design: 홈 페이지 공유 미리보기 퍼블리싱

* fix: 랜덤 응원 메시지가 모달보다 위로 뜨는 오류 해결

* remove: landing blur 중복 에셋 삭제

* fix: landing blur 에셋 import 경로 수정

* design, feat, chore : 편지 작성 페이지 추가 퍼블리싱 + 기능구현 + API연결 + 관리자페이지 퍼블리싱 (#28)

* design : 카테고리 버튼 사이즈 full로 변경

* design : 옵션 슬라이드 바텀시트 애니메이션 구현(약간 미완)

* refactor:관리자 / 모바일용 레이아웃 분리

* design : 관리자 페이지 퍼블리싱

* design:관리자 페이지 퍼블리싱

* refactor : 폰트 선택 모달 아이콘 svgr 변경 + 목API 형식에 맞춰 타입 수정 + API 연결 작업 90% 완료

* feat:글작성 페이지 쿼리스트링으로 이전편지 가져오기 API연결

* feat:편지 상세 페이지 API 데이터바인딩 90%완료(유저 우편번호 데이터 필요)

* feat:편지삭제 api 생성

* feat:글작성, 상세 페이지 뒤로가기 버튼 + 상세페이지 글 삭제 버튼 추가

* refactor : ResultLetter 타입 변경

* feat:글 작성 페이지 네비게이션 가드 테스트

* fix:코드리뷰 수정사항 반영

* feat: 내 편지함 기능 구현 1차 (#30)

* feat: 내 편지함, 상세 기능 구현 1차
- 내 편지함 기능구현
  - 렌더링
  - 3의 배수가 아닌 경우 이미지 추가
  - 아무것도 없을 때 노트 추가
- 내 편지함 상세 기능 구현
  - 공유 작성 및 전송
  - 편지 리스트 렌더링
  - 상대방 차단하기
- TODO
  - [ ] tanstackQuery 적용
  - [ ] 무한 스크롤? 적용할지?
  - [ ] 상태관리 확인하기

* refactor: API 컨벤션 통일

- API 파일이름 수정
- api.ts 삭제

* refactor: merge 후 오류 해결

---------

Co-authored-by: nirii00 <[email protected]>

* design: 404 페이지 디자인 (#33)

- 404 페이지 퍼블리싱
- 홈으로 가는 버튼 추가

Co-authored-by: nirii00 <[email protected]>

* feat: 롤링페이퍼 기능 구현 (mock api) (#35)

* feat: Tanstack query를 이용한 데이터 가져오는 커스텀 훅 useFetchQuery 구현

* feat: NoticeRollingPaper에 데이터 패칭 적용
- NoticeRolling -> NoticeRollingPaper로 컴포넌트 명 수정

* feat: 홈 페이지에 공용 컴포넌트 적용

* rename: MessageDetailModal -> CommentDetailModal 컴포넌트 명 수정

* rename: Message -> Comment 컴포넌트 명 수정

* feat: 롤링페이퍼 조회 기능 구현

* refactor: 중복되는 배경 컴포넌트 적용 및 불필요한 에셋 제거

* refactor: 중복되는 메모 배경 컴포넌트 적용 및 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 중복되는 모달 배경 컴포넌트 적용 및 불필요한 에셋 제거

* style: 커스텀 훅 제거 및 queryClient 기본값 설정

* feat: 삭제 모달 추가 및 삭제 mock api 연결

* feat: 편지 추가 mock api 연결

* fix: 신고 ui 제거

* style: 사용하지 않는 코드 제거

* style: 엔드포인트 오타 수정

* style: 더미 제거

* feat: 오고 있는 편지 조회 기능 구현 (mock api) (#36)

* style: 홈 페이지 eslint 오류 해결

* remove: 사용하지 않는 파일 삭제

* feat: 오고 있는 편지 조회 mock api 연결

* feat: 오고 있는 편지 클릭 시 편지 상세 페이지로 이동

* feat: 편지 목록 높이 자동 조정 및 스크롤 기능 추가

* fix: 랜덤 응원 메시지 모달 위로 뜨는 오류 해결

* fix: 오고 있는 편지 클릭 시 편지 미리보기로 이동하는 라우팅 오류 해결

* feat: 오고 있는 편지 목록에서 시간이 다 된 항목을 자동으로 삭제하는 기능 추가

* refactor: 오고 있는 편지 파일 구조 수정

* style: 오고 있는 편지 함수 선언을 화살표 함수로 변환

* feat: 새로 도착한 편지 개수 계산 구현

* feat: 마이페이지 내 정보 조회 기능 구현 (mock api) (#39)

* feat: 마이페이지 내 정보 조회 기능 구현

* fix: merge conflict 해결

* fix: 온보딩 애니메이션 오류 해결 (#41)

- 온보딩 편지 애니메이션 모바일 오류 해결
- 온보딩 단계에 따른 상태관리
- 온보딩이 끝난 후 홈으로 이동

Co-authored-by: nirii00 <[email protected]>

* feat:관리자 페이지 1차 기능 구현 (#43)

* feat:관리자 페이지 신고기능 구현완료(페이지네이션 제외)

* feat:관리자 페이지 검열관리 필터링 기능 개발중(검열 단어 추가 구현중)

* feat:필터링 단어 추가기능 목api연결 완료(단어 삭제는 목api가 안만들어짐) + 차단 편지목록 퍼블리싱

* chore:badwords, filteredLetter 라우팅 분리 + 사이드바 버튼에 라우팅 연결

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 편지 게시글 공유 기능 구현 (mock api) (#53)

* feat: 공유 게시글 목록 조회 기능 구현

* feat: 공유 게시글 상세 조회 기능 구현

* feat: 게시글 공유 요청 수락/거절 기능 구현

* perf: NewLetterModal의 불필요한 api 호출 제거

* fix: HomeRight의 useEffect 의존성 배열에 fetchIncomingLetters 추가

* fix: 공유 편지 미리보기에서 텍스트와 버튼이 겹쳐보이는 오류 해결

* refactor: hasNewLetters 로컬 상태 제거 및 arrivedCount 전역 상태로 대체

* fix: 특정 모바일 크기에서 내 편지함이 가려져 잘 안 보이는 오류 해결

* fix: 특정 모바일 크기에서 게시판이 잘 안 보이는 오류 해결

* design: 홈 페이지 공유 요청 모달에 스크롤 기능 추가

* style: 불필요한 console.log 삭제

* refactor: 테스트용 코드 삭제

* refactor: 'Letter' 인터페이스 이름을 'ShareLetter'로 변경

* fix: selector로 필요한 값만 불러오도록 수정하여 불필요한 렌더링 방지

* feat: 로그인 기능구현 (#52)

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* feat: 로그인 기능 임시 구현
- API 완성 되지 않음 : 논의된 부분을 바탕으로 임시로 제작함(작동 안함)
- 토큰을 전달 받기 위해 권한 상태 페이지 추가(보여주기 위한 용도가 아니라 쿼리문으로 토큰 전달을 위한 목적)

* feat: logout API 추가

* test: 로그인 테스트용 임시 커밋

* refactor: API 변경 사항 수정 반영, 토큰관련 interceptor 문 수정
- API 수정 반영하여 오류 사항들 수정
- 기존 interceptor 문에 오류가 있어서 수정
- AuthCallback Page에서 회원정보 설정 및 우편번호 발급

* test: 탈퇴 처리 테스트

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* Fix: intercepter 오류 해결
- intercepter retry 코드 빠진 부분 수정
- header에 잘못 설정 하는 부분 수정

* feat: 마이페이지 로그아웃 적용
- 로그아웃 테스트를 위해 마이페이지에 로그아웃 기능을 먼저 구현했습니다!

* Update src/pages/Auth/index.tsx

refac: 코드 개선

Co-authored-by: Minha Ahn <[email protected]>

* refactor: 코드 리뷰 반영
- 로그인 타입 파일 만듦
- logout 중복 선언 정리
- myPage 탈퇴 추가, p 태그 -> 버튼
- useAuthState 상태 가져오는 코드 수정

* refactor: myPage 오타 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>

* FIx, Feat: 로그인 기능 버그 수정, 권한별 접근 페이지 기능 추가 (#56)

* Fix: reissue 요청 수정

* Fix: 무한 response intercept 수정
- 요청 queue 포함

* feat: 권한별 접근 페이지 기능 추가
- PrivateRoute 추가하여 로그인된 사용자만 접근 가능하도록 설정
- AuthCallbackPage 임의로 접근시 home, login redirection 추가
- 로그인된 사용자는 login 접근 불가
- TODO
  - [ ] : intercepters.response에서 reissue 실패하는 경우 기존 api 함수에 catch로 에러 전달이 안되는 것 같음(추가로 문제 상황을 확인)

---------

Co-authored-by: nirii00 <[email protected]>

* feat: deploy.yml 생성

- main branch 자동 배포를 위해 프로젝트 빌드 및 deploy.yml 파일 생성
  - secret key 등록
  - 캐시 값을 바탕으로 패키지 설치 확인
- strictMode 활성화

* fix: pnpm install 에러 수정

* fix: 빌드 폴더 경로 수정

---------

Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Seungyeon Han (Tiffany) <[email protected]>
wldnjs990 added a commit that referenced this pull request Mar 4, 2025
* design: 모바일 뷰 기본 틀 설정 (#2)

* chore: mui icon 라이브러리 설치

* design: 최대 너비 600px 제한

* design: 모바일 viewport 문제 개션을 위한 훅 추가

* design: 마이페이지 퍼블리싱 (#8)

* design: 마이페이지 에셋 추가

* design: 마이페이지 퍼블리싱

* design: ConfirmModal 컴포넌트 구현 및 탈퇴 모달 적용

* design: 모달 배경 이미지 적용

* design: 모달 컴포넌트 버튼 비율 동일하도록 수정

* refactor: 중복되는 버튼 디자인 스타일 클래스로 분리

* design: 배경 오버레이 이미지 추가

* fix: useViewport 계산 상수 수정

* feat: 온도에 맞는 텍스트 보여주는 함수 추가

* refactor: hn 태그 적용

* refactor: Header 컴포넌트를 공통 레이아웃으로 분리

* refactor: 모달 오버레이 공통 컴포넌트로 분리

* design: 알림페이지 퍼블리싱 (#10)

* design: 알림 페이지 에셋 추가

* feat: 알림 아이콘 - 알림 페이지 라우팅 연결

* design: 경고 모달창 퍼블리싱

* design: 알림 페이지 퍼블리싱

* design: 페이지 상단 간격 수정

* refactor: 레이아웃 컴포넌트 구조 수정

* design: 편지작성 페이지 퍼블리싱 (#13)

* design:편지 작성 페이지 작업 시작

* design:폰트 css 추가

* design:편지 작성 페이지 작업중

* design:글 작성 페이지 관련 이미지

* design:애니메이션 요소, 테마 제외한 퍼블리싱 완료

* design:편지지 테마선택 퍼블리싱 완료

* refactor:타입명 파스칼 케이스로 변경 & 상수명 대문자로 변경 & 타입 export import문 제거 & 몇몇 코드 상수파일 통합 & 타입파일 types폴더로 이동

* refactor:코드리뷰 수정사항 적용

* design:편지작성 완료 애니메이션 구현

* design:고민편지 작성 결과에도 애니메이션 적용 & ResultLetter 컴포넌트 공용 컴포넌트로 이동

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* design: 온보딩 페이지 퍼블리싱 (#18)

* design: 온보딩 페이지 퍼블리싱

우편번호 페이지 퍼블리싱 완료
우편번호 애니메이션 구현 완료
애니메이션 페이지 퍼블리싱 완료
애니메이션 페이지 구현 중
관리자 편지는 컴포넌트 제작 후 라우팅 연결할 예정

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design: 온보딩 페이지 편지 애니메이션 구현

- 온보딩 페이지에서 편지 애니메이션 구현
- TODO: 모바일 뷰 확인
- TODO: 편지 상세 링크

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* refactor: pr 피드백 반영

- 이미지 에셋 정리
- animation 파일 분리
- css 충돌 해결
- spinner -> containerRef 오류 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>

* design: 홈 페이지 퍼블리싱  (#19)

* design: 홈 페이지 에셋 추가

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* refactor: package-json 삭제

* refactor: ModalOverlay 컴포넌트 새 속성에 맞춰 모달 정리

* fix: import 오류 해결

* refactor: SpecialLetterBanner 애니메이션 animation.css로 분리

* design: Home에서 grow 적용으로 불필요한 h-screen 제거

* rename: 에셋 파일명을 케밥 케이스로 변경

* remove: 필요없는 에셋 삭제

* fix: 이미지 경로 import 방식 수정

* refactor: 버튼 컴포넌트 반복 로직 개선

* style: HomeRight 레이아웃 수정

* refactor: max-w 값 수정 및 불필요한 삼항 연산자 제거

* rename: Navbar를 HomeHeader로 대체

* rename: 홈 페이지 배경 이미지 업데이트

* fix: 모바일 및 웹에서 레이아웃 오류 해결, 홈 페이지 구조 리팩토링

* design: 홈 페이지 왼쪽 배경 width 조정

* design: SpecialLetterBanner width 조정

* design: 게시판 이미지 버튼 width 조정

* fix: coflict 오류 해결

* design: 로그인 및 랜딩 페이지 퍼블리싱 (#22)

* design: 전체 배경 그라데이션 삽입

* design: 로그인 페이지 에셋 추가

* design: 로그인 페이지 퍼블리싱

* design: 로그인 페이지 에셋 변경 및 반영

* design: 랜딩페이지 퍼블리싱

* remove: 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 로그인 아이콘에 aria-label 추가

* style: 랜딩페이지 원 크기 수정

* design: 홈 페이지 공유 미리보기 퍼블리싱  (#25)

* fix: 홈 페이지 게시판 라우팅 오류 해결

* fix: 랜덤 응원 메시지 z-index 조정으로 클릭 안되는 오류 해결

* design: 홈 페이지 공유 미리보기 에셋 추가

* design: 홈 페이지 공유 미리보기 퍼블리싱

* fix: 랜덤 응원 메시지가 모달보다 위로 뜨는 오류 해결

* remove: landing blur 중복 에셋 삭제

* fix: landing blur 에셋 import 경로 수정

* design, feat, chore : 편지 작성 페이지 추가 퍼블리싱 + 기능구현 + API연결 + 관리자페이지 퍼블리싱 (#28)

* design : 카테고리 버튼 사이즈 full로 변경

* design : 옵션 슬라이드 바텀시트 애니메이션 구현(약간 미완)

* refactor:관리자 / 모바일용 레이아웃 분리

* design : 관리자 페이지 퍼블리싱

* design:관리자 페이지 퍼블리싱

* refactor : 폰트 선택 모달 아이콘 svgr 변경 + 목API 형식에 맞춰 타입 수정 + API 연결 작업 90% 완료

* feat:글작성 페이지 쿼리스트링으로 이전편지 가져오기 API연결

* feat:편지 상세 페이지 API 데이터바인딩 90%완료(유저 우편번호 데이터 필요)

* feat:편지삭제 api 생성

* feat:글작성, 상세 페이지 뒤로가기 버튼 + 상세페이지 글 삭제 버튼 추가

* refactor : ResultLetter 타입 변경

* feat:글 작성 페이지 네비게이션 가드 테스트

* fix:코드리뷰 수정사항 반영

* feat: 내 편지함 기능 구현 1차 (#30)

* feat: 내 편지함, 상세 기능 구현 1차
- 내 편지함 기능구현
  - 렌더링
  - 3의 배수가 아닌 경우 이미지 추가
  - 아무것도 없을 때 노트 추가
- 내 편지함 상세 기능 구현
  - 공유 작성 및 전송
  - 편지 리스트 렌더링
  - 상대방 차단하기
- TODO
  - [ ] tanstackQuery 적용
  - [ ] 무한 스크롤? 적용할지?
  - [ ] 상태관리 확인하기

* refactor: API 컨벤션 통일

- API 파일이름 수정
- api.ts 삭제

* refactor: merge 후 오류 해결

---------

Co-authored-by: nirii00 <[email protected]>

* design: 404 페이지 디자인 (#33)

- 404 페이지 퍼블리싱
- 홈으로 가는 버튼 추가

Co-authored-by: nirii00 <[email protected]>

* feat: 롤링페이퍼 기능 구현 (mock api) (#35)

* feat: Tanstack query를 이용한 데이터 가져오는 커스텀 훅 useFetchQuery 구현

* feat: NoticeRollingPaper에 데이터 패칭 적용
- NoticeRolling -> NoticeRollingPaper로 컴포넌트 명 수정

* feat: 홈 페이지에 공용 컴포넌트 적용

* rename: MessageDetailModal -> CommentDetailModal 컴포넌트 명 수정

* rename: Message -> Comment 컴포넌트 명 수정

* feat: 롤링페이퍼 조회 기능 구현

* refactor: 중복되는 배경 컴포넌트 적용 및 불필요한 에셋 제거

* refactor: 중복되는 메모 배경 컴포넌트 적용 및 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 중복되는 모달 배경 컴포넌트 적용 및 불필요한 에셋 제거

* style: 커스텀 훅 제거 및 queryClient 기본값 설정

* feat: 삭제 모달 추가 및 삭제 mock api 연결

* feat: 편지 추가 mock api 연결

* fix: 신고 ui 제거

* style: 사용하지 않는 코드 제거

* style: 엔드포인트 오타 수정

* style: 더미 제거

* feat: 오고 있는 편지 조회 기능 구현 (mock api) (#36)

* style: 홈 페이지 eslint 오류 해결

* remove: 사용하지 않는 파일 삭제

* feat: 오고 있는 편지 조회 mock api 연결

* feat: 오고 있는 편지 클릭 시 편지 상세 페이지로 이동

* feat: 편지 목록 높이 자동 조정 및 스크롤 기능 추가

* fix: 랜덤 응원 메시지 모달 위로 뜨는 오류 해결

* fix: 오고 있는 편지 클릭 시 편지 미리보기로 이동하는 라우팅 오류 해결

* feat: 오고 있는 편지 목록에서 시간이 다 된 항목을 자동으로 삭제하는 기능 추가

* refactor: 오고 있는 편지 파일 구조 수정

* style: 오고 있는 편지 함수 선언을 화살표 함수로 변환

* feat: 새로 도착한 편지 개수 계산 구현

* feat: 마이페이지 내 정보 조회 기능 구현 (mock api) (#39)

* feat: 마이페이지 내 정보 조회 기능 구현

* fix: merge conflict 해결

* fix: 온보딩 애니메이션 오류 해결 (#41)

- 온보딩 편지 애니메이션 모바일 오류 해결
- 온보딩 단계에 따른 상태관리
- 온보딩이 끝난 후 홈으로 이동

Co-authored-by: nirii00 <[email protected]>

* feat:관리자 페이지 1차 기능 구현 (#43)

* feat:관리자 페이지 신고기능 구현완료(페이지네이션 제외)

* feat:관리자 페이지 검열관리 필터링 기능 개발중(검열 단어 추가 구현중)

* feat:필터링 단어 추가기능 목api연결 완료(단어 삭제는 목api가 안만들어짐) + 차단 편지목록 퍼블리싱

* chore:badwords, filteredLetter 라우팅 분리 + 사이드바 버튼에 라우팅 연결

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 편지 게시글 공유 기능 구현 (mock api) (#53)

* feat: 공유 게시글 목록 조회 기능 구현

* feat: 공유 게시글 상세 조회 기능 구현

* feat: 게시글 공유 요청 수락/거절 기능 구현

* perf: NewLetterModal의 불필요한 api 호출 제거

* fix: HomeRight의 useEffect 의존성 배열에 fetchIncomingLetters 추가

* fix: 공유 편지 미리보기에서 텍스트와 버튼이 겹쳐보이는 오류 해결

* refactor: hasNewLetters 로컬 상태 제거 및 arrivedCount 전역 상태로 대체

* fix: 특정 모바일 크기에서 내 편지함이 가려져 잘 안 보이는 오류 해결

* fix: 특정 모바일 크기에서 게시판이 잘 안 보이는 오류 해결

* design: 홈 페이지 공유 요청 모달에 스크롤 기능 추가

* style: 불필요한 console.log 삭제

* refactor: 테스트용 코드 삭제

* refactor: 'Letter' 인터페이스 이름을 'ShareLetter'로 변경

* fix: selector로 필요한 값만 불러오도록 수정하여 불필요한 렌더링 방지

* feat: 로그인 기능구현 (#52)

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* feat: 로그인 기능 임시 구현
- API 완성 되지 않음 : 논의된 부분을 바탕으로 임시로 제작함(작동 안함)
- 토큰을 전달 받기 위해 권한 상태 페이지 추가(보여주기 위한 용도가 아니라 쿼리문으로 토큰 전달을 위한 목적)

* feat: logout API 추가

* test: 로그인 테스트용 임시 커밋

* refactor: API 변경 사항 수정 반영, 토큰관련 interceptor 문 수정
- API 수정 반영하여 오류 사항들 수정
- 기존 interceptor 문에 오류가 있어서 수정
- AuthCallback Page에서 회원정보 설정 및 우편번호 발급

* test: 탈퇴 처리 테스트

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* Fix: intercepter 오류 해결
- intercepter retry 코드 빠진 부분 수정
- header에 잘못 설정 하는 부분 수정

* feat: 마이페이지 로그아웃 적용
- 로그아웃 테스트를 위해 마이페이지에 로그아웃 기능을 먼저 구현했습니다!

* Update src/pages/Auth/index.tsx

refac: 코드 개선

Co-authored-by: Minha Ahn <[email protected]>

* refactor: 코드 리뷰 반영
- 로그인 타입 파일 만듦
- logout 중복 선언 정리
- myPage 탈퇴 추가, p 태그 -> 버튼
- useAuthState 상태 가져오는 코드 수정

* refactor: myPage 오타 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>

* FIx, Feat: 로그인 기능 버그 수정, 권한별 접근 페이지 기능 추가 (#56)

* Fix: reissue 요청 수정

* Fix: 무한 response intercept 수정
- 요청 queue 포함

* feat: 권한별 접근 페이지 기능 추가
- PrivateRoute 추가하여 로그인된 사용자만 접근 가능하도록 설정
- AuthCallbackPage 임의로 접근시 home, login redirection 추가
- 로그인된 사용자는 login 접근 불가
- TODO
  - [ ] : intercepters.response에서 reissue 실패하는 경우 기존 api 함수에 catch로 에러 전달이 안되는 것 같음(추가로 문제 상황을 확인)

---------

Co-authored-by: nirii00 <[email protected]>

* feat: deploy.yml 생성

- main branch 자동 배포를 위해 프로젝트 빌드 및 deploy.yml 파일 생성
  - secret key 등록
  - 캐시 값을 바탕으로 패키지 설치 확인
- strictMode 활성화

* fix: pnpm install 에러 수정

* fix: 빌드 폴더 경로 수정

* Fix: 환경 변수 설정 추가

---------

Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Seungyeon Han (Tiffany) <[email protected]>
wldnjs990 added a commit that referenced this pull request Mar 4, 2025
* design: 모바일 뷰 기본 틀 설정 (#2)

* chore: mui icon 라이브러리 설치

* design: 최대 너비 600px 제한

* design: 모바일 viewport 문제 개션을 위한 훅 추가

* design: 마이페이지 퍼블리싱 (#8)

* design: 마이페이지 에셋 추가

* design: 마이페이지 퍼블리싱

* design: ConfirmModal 컴포넌트 구현 및 탈퇴 모달 적용

* design: 모달 배경 이미지 적용

* design: 모달 컴포넌트 버튼 비율 동일하도록 수정

* refactor: 중복되는 버튼 디자인 스타일 클래스로 분리

* design: 배경 오버레이 이미지 추가

* fix: useViewport 계산 상수 수정

* feat: 온도에 맞는 텍스트 보여주는 함수 추가

* refactor: hn 태그 적용

* refactor: Header 컴포넌트를 공통 레이아웃으로 분리

* refactor: 모달 오버레이 공통 컴포넌트로 분리

* design: 알림페이지 퍼블리싱 (#10)

* design: 알림 페이지 에셋 추가

* feat: 알림 아이콘 - 알림 페이지 라우팅 연결

* design: 경고 모달창 퍼블리싱

* design: 알림 페이지 퍼블리싱

* design: 페이지 상단 간격 수정

* refactor: 레이아웃 컴포넌트 구조 수정

* design: 편지작성 페이지 퍼블리싱 (#13)

* design:편지 작성 페이지 작업 시작

* design:폰트 css 추가

* design:편지 작성 페이지 작업중

* design:글 작성 페이지 관련 이미지

* design:애니메이션 요소, 테마 제외한 퍼블리싱 완료

* design:편지지 테마선택 퍼블리싱 완료

* refactor:타입명 파스칼 케이스로 변경 & 상수명 대문자로 변경 & 타입 export import문 제거 & 몇몇 코드 상수파일 통합 & 타입파일 types폴더로 이동

* refactor:코드리뷰 수정사항 적용

* design:편지작성 완료 애니메이션 구현

* design:고민편지 작성 결과에도 애니메이션 적용 & ResultLetter 컴포넌트 공용 컴포넌트로 이동

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* design: 온보딩 페이지 퍼블리싱 (#18)

* design: 온보딩 페이지 퍼블리싱

우편번호 페이지 퍼블리싱 완료
우편번호 애니메이션 구현 완료
애니메이션 페이지 퍼블리싱 완료
애니메이션 페이지 구현 중
관리자 편지는 컴포넌트 제작 후 라우팅 연결할 예정

* design: 게시판 퍼블리싱 (#14)

* design: 편지 게시판 페이지 내 편지 미리보기 컴포넌트 퍼블리싱

* design: 롤링페이퍼 공지 컴포넌트 퍼블리싱

* design: 편지 공유 게시판 퍼블리싱

* refactor: ConfirmModal 배경 이미지 삽입 방식 개선

* rename: 파일명 형식 통일을 위한 에셋 파일명 수정

* design: 롤링페이퍼 편지 컴포넌트 퍼블리싱

* design: 롤링페이퍼 페이지 퍼블리싱

* refactor: ModalOverlay 컴포넌트로 모달의 외부 영역 클릭 로직 이동

* design: 롤링페이퍼 페이지 메시지 상세조회 모달 퍼블리싱

* design: 모달 활성화 시, 스크롤이 안되도록 수정

* design: 신고 모달 컴포넌트 퍼블리싱

* design: 롤링페이퍼 메사지 추가 모달 버픕ㄹ리싱

* design: Header 컴포넌트 position을 fixed로 변경

* refactor: 하단 배경 컴포넌트로 분리

* design: 마이페이지 중 내가 올린 게시물 페이지 퍼블리싱

* design: 게시판 상세 페이지의 편지 컴포넌트 퍼블리싱

* design: 편지 공유 게시글 상세 페이지 퍼블리싱

* feat: 게시글 상세 페이지 헤더 컴포넌트 뒤로가기 기능 추가

* remove: 중복 에셋 제거

* refactor: 중복 스타일 코드 utilities로 분리

* design: 내 편지함 페이지 퍼블리싱 (#16)

* design: 내 편지함 목록 페이지 퍼블리싱

* refactor: 리스트 디자인 컴포넌트로 분리

* design: 컴포넌트 props명 수정 및 sender, receiver 디자인 변경

* design: 내 편지함 상세 페이지 퍼블리싱

* refactor: 배경 이미지 삽입되는 로직 컴포넌트로 분리

* design: 필요한 모달 퍼블리싱 및 버튼과 연결

* rename: ListItemContainer -> ListItemWrapper로 컴포넌트명 수정

* refactor: 페이지 제목에 PageTitle 컴포넌트 적용

* design: 온보딩 페이지 편지 애니메이션 구현

- 온보딩 페이지에서 편지 애니메이션 구현
- TODO: 모바일 뷰 확인
- TODO: 편지 상세 링크

* design : 랜덤 편지 페이지 & 편지 상세 페이지 퍼블리싱 (#17)

* design:랜덤편지 메인화면, 편지선택 모달 퍼블리싱

* chore:스와이퍼 설치

* design:랜덤 편지 페이지 스와이퍼 적용

* design:편지 상세보기 퍼블리싱

* design:편지 작성 페이지 레이아웃 관련 수정

* design:랜덤편지 페이지 퍼블리싱

* design:편지 상세 페이지 퍼블리싱

* design:랜덤편지 세부사항 수정 & 공용 컴포넌트들로 코드 수정

* refactor:코드리뷰 수정사항 반영

* refactor: pr 피드백 반영

- 이미지 에셋 정리
- animation 파일 분리
- css 충돌 해결
- spinner -> containerRef 오류 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>

* design: 홈 페이지 퍼블리싱  (#19)

* design: 홈 페이지 에셋 추가

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* design: 홈 페이지 퍼블리싱

* design: 홈 페이지 모달 퍼블리싱

* refactor: package-json 삭제

* refactor: ModalOverlay 컴포넌트 새 속성에 맞춰 모달 정리

* fix: import 오류 해결

* refactor: SpecialLetterBanner 애니메이션 animation.css로 분리

* design: Home에서 grow 적용으로 불필요한 h-screen 제거

* rename: 에셋 파일명을 케밥 케이스로 변경

* remove: 필요없는 에셋 삭제

* fix: 이미지 경로 import 방식 수정

* refactor: 버튼 컴포넌트 반복 로직 개선

* style: HomeRight 레이아웃 수정

* refactor: max-w 값 수정 및 불필요한 삼항 연산자 제거

* rename: Navbar를 HomeHeader로 대체

* rename: 홈 페이지 배경 이미지 업데이트

* fix: 모바일 및 웹에서 레이아웃 오류 해결, 홈 페이지 구조 리팩토링

* design: 홈 페이지 왼쪽 배경 width 조정

* design: SpecialLetterBanner width 조정

* design: 게시판 이미지 버튼 width 조정

* fix: coflict 오류 해결

* design: 로그인 및 랜딩 페이지 퍼블리싱 (#22)

* design: 전체 배경 그라데이션 삽입

* design: 로그인 페이지 에셋 추가

* design: 로그인 페이지 퍼블리싱

* design: 로그인 페이지 에셋 변경 및 반영

* design: 랜딩페이지 퍼블리싱

* remove: 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 로그인 아이콘에 aria-label 추가

* style: 랜딩페이지 원 크기 수정

* design: 홈 페이지 공유 미리보기 퍼블리싱  (#25)

* fix: 홈 페이지 게시판 라우팅 오류 해결

* fix: 랜덤 응원 메시지 z-index 조정으로 클릭 안되는 오류 해결

* design: 홈 페이지 공유 미리보기 에셋 추가

* design: 홈 페이지 공유 미리보기 퍼블리싱

* fix: 랜덤 응원 메시지가 모달보다 위로 뜨는 오류 해결

* remove: landing blur 중복 에셋 삭제

* fix: landing blur 에셋 import 경로 수정

* design, feat, chore : 편지 작성 페이지 추가 퍼블리싱 + 기능구현 + API연결 + 관리자페이지 퍼블리싱 (#28)

* design : 카테고리 버튼 사이즈 full로 변경

* design : 옵션 슬라이드 바텀시트 애니메이션 구현(약간 미완)

* refactor:관리자 / 모바일용 레이아웃 분리

* design : 관리자 페이지 퍼블리싱

* design:관리자 페이지 퍼블리싱

* refactor : 폰트 선택 모달 아이콘 svgr 변경 + 목API 형식에 맞춰 타입 수정 + API 연결 작업 90% 완료

* feat:글작성 페이지 쿼리스트링으로 이전편지 가져오기 API연결

* feat:편지 상세 페이지 API 데이터바인딩 90%완료(유저 우편번호 데이터 필요)

* feat:편지삭제 api 생성

* feat:글작성, 상세 페이지 뒤로가기 버튼 + 상세페이지 글 삭제 버튼 추가

* refactor : ResultLetter 타입 변경

* feat:글 작성 페이지 네비게이션 가드 테스트

* fix:코드리뷰 수정사항 반영

* feat: 내 편지함 기능 구현 1차 (#30)

* feat: 내 편지함, 상세 기능 구현 1차
- 내 편지함 기능구현
  - 렌더링
  - 3의 배수가 아닌 경우 이미지 추가
  - 아무것도 없을 때 노트 추가
- 내 편지함 상세 기능 구현
  - 공유 작성 및 전송
  - 편지 리스트 렌더링
  - 상대방 차단하기
- TODO
  - [ ] tanstackQuery 적용
  - [ ] 무한 스크롤? 적용할지?
  - [ ] 상태관리 확인하기

* refactor: API 컨벤션 통일

- API 파일이름 수정
- api.ts 삭제

* refactor: merge 후 오류 해결

---------

Co-authored-by: nirii00 <[email protected]>

* design: 404 페이지 디자인 (#33)

- 404 페이지 퍼블리싱
- 홈으로 가는 버튼 추가

Co-authored-by: nirii00 <[email protected]>

* feat: 롤링페이퍼 기능 구현 (mock api) (#35)

* feat: Tanstack query를 이용한 데이터 가져오는 커스텀 훅 useFetchQuery 구현

* feat: NoticeRollingPaper에 데이터 패칭 적용
- NoticeRolling -> NoticeRollingPaper로 컴포넌트 명 수정

* feat: 홈 페이지에 공용 컴포넌트 적용

* rename: MessageDetailModal -> CommentDetailModal 컴포넌트 명 수정

* rename: Message -> Comment 컴포넌트 명 수정

* feat: 롤링페이퍼 조회 기능 구현

* refactor: 중복되는 배경 컴포넌트 적용 및 불필요한 에셋 제거

* refactor: 중복되는 메모 배경 컴포넌트 적용 및 불필요한 에셋 제거

* remove: 중복 에셋 제거

* refactor: 중복되는 모달 배경 컴포넌트 적용 및 불필요한 에셋 제거

* style: 커스텀 훅 제거 및 queryClient 기본값 설정

* feat: 삭제 모달 추가 및 삭제 mock api 연결

* feat: 편지 추가 mock api 연결

* fix: 신고 ui 제거

* style: 사용하지 않는 코드 제거

* style: 엔드포인트 오타 수정

* style: 더미 제거

* feat: 오고 있는 편지 조회 기능 구현 (mock api) (#36)

* style: 홈 페이지 eslint 오류 해결

* remove: 사용하지 않는 파일 삭제

* feat: 오고 있는 편지 조회 mock api 연결

* feat: 오고 있는 편지 클릭 시 편지 상세 페이지로 이동

* feat: 편지 목록 높이 자동 조정 및 스크롤 기능 추가

* fix: 랜덤 응원 메시지 모달 위로 뜨는 오류 해결

* fix: 오고 있는 편지 클릭 시 편지 미리보기로 이동하는 라우팅 오류 해결

* feat: 오고 있는 편지 목록에서 시간이 다 된 항목을 자동으로 삭제하는 기능 추가

* refactor: 오고 있는 편지 파일 구조 수정

* style: 오고 있는 편지 함수 선언을 화살표 함수로 변환

* feat: 새로 도착한 편지 개수 계산 구현

* feat: 마이페이지 내 정보 조회 기능 구현 (mock api) (#39)

* feat: 마이페이지 내 정보 조회 기능 구현

* fix: merge conflict 해결

* fix: 온보딩 애니메이션 오류 해결 (#41)

- 온보딩 편지 애니메이션 모바일 오류 해결
- 온보딩 단계에 따른 상태관리
- 온보딩이 끝난 후 홈으로 이동

Co-authored-by: nirii00 <[email protected]>

* feat:관리자 페이지 1차 기능 구현 (#43)

* feat:관리자 페이지 신고기능 구현완료(페이지네이션 제외)

* feat:관리자 페이지 검열관리 필터링 기능 개발중(검열 단어 추가 구현중)

* feat:필터링 단어 추가기능 목api연결 완료(단어 삭제는 목api가 안만들어짐) + 차단 편지목록 퍼블리싱

* chore:badwords, filteredLetter 라우팅 분리 + 사이드바 버튼에 라우팅 연결

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 편지 게시글 공유 기능 구현 (mock api) (#53)

* feat: 공유 게시글 목록 조회 기능 구현

* feat: 공유 게시글 상세 조회 기능 구현

* feat: 게시글 공유 요청 수락/거절 기능 구현

* perf: NewLetterModal의 불필요한 api 호출 제거

* fix: HomeRight의 useEffect 의존성 배열에 fetchIncomingLetters 추가

* fix: 공유 편지 미리보기에서 텍스트와 버튼이 겹쳐보이는 오류 해결

* refactor: hasNewLetters 로컬 상태 제거 및 arrivedCount 전역 상태로 대체

* fix: 특정 모바일 크기에서 내 편지함이 가려져 잘 안 보이는 오류 해결

* fix: 특정 모바일 크기에서 게시판이 잘 안 보이는 오류 해결

* design: 홈 페이지 공유 요청 모달에 스크롤 기능 추가

* style: 불필요한 console.log 삭제

* refactor: 테스트용 코드 삭제

* refactor: 'Letter' 인터페이스 이름을 'ShareLetter'로 변경

* fix: selector로 필요한 값만 불러오도록 수정하여 불필요한 렌더링 방지

* feat: 로그인 기능구현 (#52)

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* feat:편지 작성 페이지 1차 기능구현 (#47)

* feat:편지전송 답장 post api 연결완료

* feat:매칭된 편지 작성시 api 분기 구현

* feat:카테고리 페이지 페이지 뒤로가기 버튼 제거 + 이전단계 위치 조정

* feat:옵션 모달 외부 클릭시 슬라이드 닫히는 로직 구현

* feat: 편지작성 페이지 전역변수 편지전송 관련 request값들 객체형태로 통일

* fix:코드리뷰 사항 수정

* feat:랜덤 편지 + 편지 상세 1차 기능 구현 (#46)

* feat:편지 상세 페이지 삭제 모달 추가

* chore:기존 파일들 컴포넌트파일로 이동

* feat:쿨타임 컴포넌트 생성 + 랜덤편지 타입 수정

* feat:차단된 편지 버튼 disabled처리

* feat:편지 상세보기 모달 생성(매칭편지는 상세페이지와 분리)

* fix:쿨타임 페이지 letterWrapper 적용

* feat:편지 상세, 랜덤 편지 api throw error 예외처리 추가

* feat:편지 매칭 제한시간 구현

* feat:랜덤편지 페이지 매칭 제한시간, 쿨타임 로직 구현

* feat:랜덤편지 페이지 편지 매칭 제한시간, 쿨타임 시간 구현

* feat:매칭된 편지 전달시 location값 전달처리({randomMatched: true})

* feat:코드리뷰 사항 수정

* feat: 로그인 기능 임시 구현
- API 완성 되지 않음 : 논의된 부분을 바탕으로 임시로 제작함(작동 안함)
- 토큰을 전달 받기 위해 권한 상태 페이지 추가(보여주기 위한 용도가 아니라 쿼리문으로 토큰 전달을 위한 목적)

* feat: logout API 추가

* test: 로그인 테스트용 임시 커밋

* refactor: API 변경 사항 수정 반영, 토큰관련 interceptor 문 수정
- API 수정 반영하여 오류 사항들 수정
- 기존 interceptor 문에 오류가 있어서 수정
- AuthCallback Page에서 회원정보 설정 및 우편번호 발급

* test: 탈퇴 처리 테스트

* Perf: 내 편지함 탄스택 쿼리 적용 (#50)

* fix: 모바일에서 gradient 보이지 않는 문제 해결

* refactor: 내 편지함 및 상세 querykey 적용
- useState을 삭제 하고 데이터 관리 및 성능 최적화를 위해 tanstack query 적용

* fix: 편지 상세 무한 스크롤 오류 수정
- 마지막 편지 보일 시 새로 페이징 하는 로직을 response data에 맞게 수정
- react-intersection-observer 라이브러리를 이용하여 마지막 요소가 view에 들어오는지 확인

* fix: 내 편지함 디자인 보이지 않는 문제 해결
- gradietn class에 !important를 적용

---------

Co-authored-by: nirii00 <[email protected]>

* feat: 소셜로그인 및 회원가입 연결
- 소셜 로그인, 회원가입 시 리디렉션 페이지 연동 완료
- 유저정보 저장 진행 중

* Fix: intercepter 오류 해결
- intercepter retry 코드 빠진 부분 수정
- header에 잘못 설정 하는 부분 수정

* feat: 마이페이지 로그아웃 적용
- 로그아웃 테스트를 위해 마이페이지에 로그아웃 기능을 먼저 구현했습니다!

* Update src/pages/Auth/index.tsx

refac: 코드 개선

Co-authored-by: Minha Ahn <[email protected]>

* refactor: 코드 리뷰 반영
- 로그인 타입 파일 만듦
- logout 중복 선언 정리
- myPage 탈퇴 추가, p 태그 -> 버튼
- useAuthState 상태 가져오는 코드 수정

* refactor: myPage 오타 수정

---------

Co-authored-by: nirii00 <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: Minha Ahn <[email protected]>

* FIx, Feat: 로그인 기능 버그 수정, 권한별 접근 페이지 기능 추가 (#56)

* Fix: reissue 요청 수정

* Fix: 무한 response intercept 수정
- 요청 queue 포함

* feat: 권한별 접근 페이지 기능 추가
- PrivateRoute 추가하여 로그인된 사용자만 접근 가능하도록 설정
- AuthCallbackPage 임의로 접근시 home, login redirection 추가
- 로그인된 사용자는 login 접근 불가
- TODO
  - [ ] : intercepters.response에서 reissue 실패하는 경우 기존 api 함수에 catch로 에러 전달이 안되는 것 같음(추가로 문제 상황을 확인)

---------

Co-authored-by: nirii00 <[email protected]>

* feat: deploy.yml 생성

- main branch 자동 배포를 위해 프로젝트 빌드 및 deploy.yml 파일 생성
  - secret key 등록
  - 캐시 값을 바탕으로 패키지 설치 확인
- strictMode 활성화

* fix: pnpm install 에러 수정

* fix: 빌드 폴더 경로 수정

* Fix: 환경 변수 설정 추가

* fix: 캐시가 존재해도 pnpm install 실행되도록 수정

- pnpm 모듈 캐시가 hit될 경우 install이 실행되지 않아 빌드가 실패하는 문제를 해결
- 캐시가 존재하더라도 `pnpm install --frozen-lockfile`을 실행하여 의존성을 보장

---------

Co-authored-by: Minha Ahn <[email protected]>
Co-authored-by: wldnjs990 <[email protected]>
Co-authored-by: nirii00 <[email protected]>
Co-authored-by: Seungyeon Han (Tiffany) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 기능 개발 이슈

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: 로그인 기능 구현

5 participants